Python yordamida o'rnatilgan tizimlar olamini o'rganing. Ushbu keng qamrovli qo'llanma MicroPython, CircuitPython, apparat integratsiyasi va global auditoriya uchun real loyihalarni o'z ichiga oladi.
Metall ustidagi Python: O'rnatilgan dasturlash va mikrokontroller integratsiyasiga chuqur sho'ng'ish
O'nlab yillar davomida o'rnatilgan tizimlar olami - aqlli soatlardan tortib sanoat uskunalarigacha bo'lgan hamma narsani quvvatlaydigan kichik kompyuterlar - C, C++ va Assembly kabi quyi darajadagi tillarning eksklyuziv domeni edi. Ushbu tillar misli ko'rilmagan nazorat va ishlashni taklif etadi, ammo ular o'rganishning qiyinligi va uzoq ishlab chiqish tsikllari bilan birga keladi. O'zining soddaligi, o'qilishi va keng ekotizimi bilan mashhur bo'lgan Python tilini kiriting. Bir vaqtlar veb-serverlar va ma'lumotlar faniga qamab qo'yilgan Python endi apparatning markaziga kuchli turtki berib, butun dunyo bo'ylab yangi avlod dasturchilar, havaskorlar va innovatorlar uchun elektronikani demokratiyalashtirmoqda.
Ushbu qo'llanma sizning Python o'rnatilgan dasturlashning hayajonli olamiga keng qamrovli kirishingizdir. Biz Python kabi yuqori darajadagi tilning apparatni qanday qilib to'g'ridan-to'g'ri boshqarishi mumkinligini o'rganamiz, buni amalga oshiradigan asosiy platformalarni o'rganamiz va dasturiy ta'minotdan silisiumga sayohatingizni boshlash uchun amaliy misollarni ko'rib chiqamiz.
Python o'rnatilgan ekotizimi: CPython'dan ko'proq
Siz shunchaki noutbukingizda ishlatadigan standart Pythonni (CPython nomi bilan tanilgan) odatdagi mikrokontrollerga o'rnata olmaysiz. Ushbu qurilmalar juda cheklangan resurslarga ega - biz RAMning kilobaytlari va zamonaviy kompyuterdagi gigabayt va gigagertsga keskin farq qiladigan protsessor quvvati megagertslari haqida gaplashmoqdamiz. Ushbu bo'shliqni bartaraf etish uchun Pythonning ixtisoslashgan, ixcham implementatsiyalari yaratilgan.
MicroPython: Mikrokontrollerlar uchun Python
MicroPython - bu cheklangan apparatda ishlash uchun optimallashtirilgan Python 3 dasturlash tilining to'liq qayta yozilishidir. Damien George tomonidan yaratilgan bo'lib, u apparatga to'g'ridan-to'g'ri, quyi darajadagi kirishni ta'minlagan holda, standart Python bilan imkon qadar mos bo'lishga qaratilgan.
- Asosiy xususiyatlar: U interaktiv Read-Eval-Print Loop (REPL)ni o'z ichiga oladi, bu sizga kompilyatsiya bosqichisiz taxtaga ulanish va kodni qatorma-qator bajarish imkonini beradi. U juda samarali, kichik xotira iziga ega va to'g'ridan-to'g'ri apparat nazorati uchun (GPIO, I2C, SPI va h.k.)
machinekabi kuchli modullarni taqdim etadi. - Eng yaxshisi: Maksimal ishlashni, apparat ustidan nozik nazoratni va keng doiradagi mikrokontrollerlar bilan moslikni istagan dasturchilar. U "metall"ga yaqinroq va ko'pincha ishlash uchun muhimroq ilovalar uchun afzal ko'riladi.
CircuitPython: Boshlang'ichlar uchun qulay quvvat
CircuitPython - bu MicroPython-ning Adafruit tomonidan yaratilgan va qo'llab-quvvatlanadigan vilka, o'z-o'zingiz qiling (DIY) elektronika sohasida yetakchi kompaniya. U MicroPython bilan yadroni baham ko'rsa-da, uning falsafasi foydalanish qulayligi va ta'limga qaratilgan.
- Asosiy xususiyatlar: Eng muhim xususiyat - u mikrokontrollerni kompyuteringizga qanday taqdim etishi. CircuitPython taxtasini ulaganingizda, u kichik USB drayveri sifatida ko'rinadi. Siz shunchaki
code.pyfaylini ushbu drayverda tahrirlaysiz va saqlaysiz; taxta qayta yuklanadi va yangi kodingizni avtomatik ravishda ishga tushiradi. Shuningdek, u barcha qo'llab-quvvatlanadigan taxtalar bo'ylab birlashtirilgan API-ga ega, ya'ni bir taxtadagi sensorni o'qish uchun kod minimal o'zgarishlar bilan boshqasida ishlaydi. - Eng yaxshisi: Boshlanuvchilar, o'qituvchilar va tezkor prototiplashga e'tibor qaratgan har bir kishi uchun. O'rganish egri chizig'i yumshoqroq va Adafruit tomonidan taqdim etilgan keng kutubxona ekotizimi sensorlar, displeylar va boshqa komponentlarni integratsiyalashni nihoyatda sodda qiladi.
MicroPython va CircuitPython: Tez taqqoslash
Ular orasidan tanlash ko'pincha sizning loyiha maqsadlaringiz va tajriba darajasiga bog'liq.
- Falsafa: MicroPython apparatga xos xususiyatlar va ishlashga ustuvor ahamiyat beradi. CircuitPython soddalik, izchillik va o'rganish qulayligini birinchi o'ringa qo'yadi.
- Ish jarayoni: MicroPython bilan siz odatda qurilmaning REPL-ga ulanish va fayllarni yuklash uchun Thonny kabi vositadan foydalanasiz. CircuitPython bilan siz
code.pyfaylini USB drayveriga sudrab olib borasiz. - Apparatni qo'llab-quvvatlash: MicroPython ko'plab ishlab chiqaruvchilarning keng ko'lamli taxtalarini qo'llab-quvvatlaydi. CircuitPython asosan Adafruit va tanlangan uchinchi tomon hamkorlarining taxtalarini qo'llab-quvvatlaydi, ammo uning yordami chuqur va yaxshi hujjatlashtirilgan.
- Kutubxonalar: CircuitPython-da o'rnatish oson bo'lgan katta, saralangan kutubxonalar to'plami mavjud. MicroPython kutubxonalari ham mavjud, ammo ular yanada bo'linib ketishi mumkin.
Ushbu qo'llanma uchun tushunchalar va ko'plab kod misollari kichik o'zgartirishlar bilan ikkalasiga ham tegishli bo'ladi. Biz farqlar muhim bo'lgan joylarda ko'rsatamiz.
Apparatingizni tanlash: Mikrokontroller jangi maydoni
Python-ni ishga tushiradigan mikrokontrollerlar (MCU) soni so'nggi yillarda keskin oshdi. Bu erda global auditoriya uchun eng mashhur va qulay variantlardan ba'zilari.
Raspberry Pi Pico & RP2040
To'liq huquqli Raspberry Pi kompyuteri bilan adashtirmaslik kerak, Pico - bu maxsus RP2040 chipi atrofida qurilgan arzon, yuqori samarali mikrokontroller taxtasi. U apparatdagi Python uchun global sevimliga aylandi.
- Asosiy xususiyatlar: Kuchli ikki yadroli ARM Cortex-M0+ protsessori, saxiy 264 KB RAM va maxsus apparat interfeyslarini yaratishga imkon beruvchi dasturlashtiriladigan I/O (PIO) deb nomlangan noyob xususiyat. Yangi Pico W modeli bort Wi-Fi-ni qo'shadi.
- Nima uchun u Python uchun ajoyib: U MicroPython uchun rasmiy, birinchi darajali yordamga ega va CircuitPython tomonidan ham yaxshi qo'llab-quvvatlanadi. Uning past narxi (ko'pincha 10 AQSh dollaridan kam) va kuchli ishlashi uni aql bovar qilmaydigan qiymatga aylantiradi.
Espressif ESP32 & ESP8266
Shanxayda joylashgan Espressif Systems kompaniyasi tomonidan ishlab chiqarilgan ESP chiplari oilasi IoTning bahssiz chempionlari hisoblanadi. Ular o'rnatilgan Wi-Fi va Bluetooth imkoniyatlari bilan mashhur bo'lib, ularni ulangan loyihalar uchun standart tanlovga aylantiradi.
- Asosiy xususiyatlar: Kuchli bitta yoki ikki yadroli protsessorlar, o'rnatilgan Wi-Fi va (ESP32-da) Bluetooth. Ular butun dunyo bo'ylab ishlab chiqaruvchilarning minglab turli xil ishlab chiqish taxtalarida mavjud.
- Nima uchun ular Python uchun ajoyib: Zo'r MicroPython yordami sizga bir necha qator Python kodi bilan bog'langan qurilmalarni yaratishga imkon beradi. Ularning protsessor quvvati veb-serverlarni ishga tushirish yoki bir nechta sensorlardan ma'lumotlarni qayta ishlash kabi murakkab vazifalar uchun etarli.
Adafruit Feather, ItsyBitsy va Trinket ekotizimlari
Adafruit standartlashtirilgan forma omillarida keng ko'lamli taxtalarni taklif etadi. Bular aniq chiplar emas, balki CircuitPython ekotizimida muammosiz ishlash uchun mo'ljallangan mahsulot oilalaridir.
- Asosiy xususiyatlar: Feather oilasidagi taxtalar umumiy pinoutga ega bo'lib, ularni o'zaro almashtirish imkonini beradi. Ko'pchilik o'rnatilgan batareyani zaryadlash sxemalari va ulagichlarini o'z ichiga oladi. Ular RP2040, ESP32 va boshqalar, shu jumladan turli xil mikrokontrollerlar bilan mavjud.
- Nima uchun ular Python uchun ajoyib: Ular CircuitPython uchun noldan yaratilgan. Ushbu qat'iy integratsiya yuzlab kutubxonalar va o'quv qo'llanmalariga kirish imkoniyati bilan silliq, ulangan va ishlatish tajribasini anglatadi.
Boshlash: Apparatda birinchi "Salom, Dunyo"
Keling, nazariyadan amaliyotga o'taylik. O'rnatilgan dasturlashning an'anaviy "Salom, Dunyo"si LEDni miltillatadi. Ushbu oddiy harakat sizning butun asboblar zanjiringiz - kod muharriridan taxtadagi firmwaregacha - to'g'ri ishlayotganligini tasdiqlaydi.
Talablar
- Qo'llab-quvvatlanadigan mikrokontroller taxtasi (masalan, Raspberry Pi Pico, ESP32 yoki Adafruit taxtasi).
- Faqat zaryadlashni emas, balki ma'lumotlarni uzatishni qo'llab-quvvatlaydigan USB kabeli.
- Kompyuter (Windows, macOS yoki Linux).
1-qadam: Firmwareni o'rnating
Sizning taxtangizda MicroPython yoki CircuitPython tarjimoni o'rnatilgan bo'lishi kerak. Bu "firmwareni yoritish" deb ataladi.
- CircuitPython uchun: circuitpython.org saytiga tashrif buyuring, taxtangizni toping va
.uf2faylini yuklab oling. Taxtangizni yuklash rejimiga o'tkazing (bunga odatda "BOOT" yoki "RESET" tugmasini bosib turish kiradi). U USB drayveri sifatida paydo bo'ladi. Yuklab olingan.uf2faylini unga sudrab olib boring. Drayv chiqariladi va qayta paydo bo'ladi, endi CIRCUITPY nomi bilan ataladi. - MicroPython uchun: micropython.org saytiga tashrif buyuring, taxtangizni toping va firmware faylini yuklab oling (ko'pincha
.uf2yoki.binfayli). Jarayon o'xshash: taxtani yuklash rejimiga o'tkazing va faylni nusxalash.
2-qadam: Muharriringizni sozlang
Siz har qanday matn muharriridan foydalanishingiz mumkin bo'lsa-da, maxsus IDE ishlab chiqishni ancha osonlashtiradi. Boshlanuvchilar uchun Thonny IDE tavsiya etiladi. U bepul, platformalararo va MicroPython va CircuitPython uchun o'rnatilgan yordam bilan birga keladi. U taxtangizni avtomatik ravishda aniqlaydi, qurilmaning REPL-ga kirish imkonini beradi va fayllarni yuklashni osonlashtiradi.
3-qadam: Miltillovchi LED kodi
Endi kod uchun. MicroPython uchun main.py nomli yangi fayl yarating yoki CircuitPython uchun mavjud code.py faylini tahrirlang.
Raspberry Pi Pico W-da MicroPython uchun misol:
import machine
import utime
# Pico W-dagi bort LED-iga maxsus nom orqali kiriladi
led = machine.Pin("LED", machine.Pin.OUT)
while True:
led.toggle()
print("LED o'zgartirildi!")
utime.sleep(0.5) # Yarim soniya kuting
Ko'pgina Adafruit taxtalarida CircuitPython uchun misol:
import board
import digitalio
import time
# Bort LED odatda 'LED' nomli pin bilan bog'langan
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = not led.value
print("LED o'zgartirildi!")
time.sleep(0.5)
Kodning buzilishi:
import: Apparatni (machine,digitalio,board) boshqarish va vaqtni (utime,time) boshqarish uchun kutubxonalarni import qilamiz.- Pin sozlamalari: Biz boshqarmoqchi bo'lgan jismoniy pinni (bort LED) aniqlaymiz va uni chiqish sifatida sozlaymiz.
- Tugatish:
while True:sikli abadiy davom etadi. Tugatish ichida biz LED holatini (yoqishdan o'chirishga yoki o'chirishdan yoqishga) o'zgartiramiz, serial konsoliga xabar chop etamiz (Thonny-da ko'rinadi) va keyin yarim soniya to'xtatamiz.
Ushbu faylni qurilmangizga saqlang. Bort LED darhol miltillay boshlashi kerak. Tabriklaymiz, siz faqat Python-ni to'g'ridan-to'g'ri mikrokontrollerda ishga tushirdingiz!
Chuqurroq sho'ng'ish: Mikrokontrollerlarda Pythonning asosiy tushunchalari
LEDni miltillatish - bu boshlanishi. Keling, yanada murakkab loyihalarni yaratish uchun foydalanadigan asosiy tushunchalarni o'rganamiz.
Umumiy maqsadli kirish/chiqish (GPIO)
GPIO pinlari - bu sizning mikrokontrolleringizga dunyo bilan o'zaro aloqa qilish imkonini beradigan jismoniy ulanishlar. Ularni kirish (tugmalar yoki sensorlardan ma'lumotlarni o'qish uchun) yoki chiqish (LEDlarni, motorlarni yoki relyelarni boshqarish uchun) sifatida sozlash mumkin.
Tugmani bosishni o'qish (MicroPython):
import machine
import utime
button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
while True:
if button.value() == 1:
print("Tugma bosildi!")
utime.sleep(0.1)
Bu erda biz 14-pinni ichki pastga tortuvchi rezistor bilan kirish sifatida sozlaymiz. Tugatish tugmaning qiymati 1 (yuqori) bo'lsa, uning bosilganligini ko'rsatadigan bo'lsa, doimiy ravishda tekshiradi.
Sensorlar bilan ishlash
Eng qiziqarli loyihalar sensorlarni o'z ichiga oladi. Python analog va raqamli sensorlardan o'qishni osonlashtiradi.
- Analog sensorlar: Ushbu sensorlar, masalan, fotoresistorlar (yorug'likni o'lchash) yoki potensiometrlar o'zgaruvchan kuchlanishni ta'minlaydi. Mikrokontrollerning Analog-raqamli konvertori (ADC) ushbu kuchlanishni o'qiydi va uni songa aylantiradi.
- Raqamli sensorlar: Ushbu yanada rivojlangan sensorlar (masalan, harorat/namlik sensorlari, akselerometrlar) aniq protokollar yordamida aloqa qiladi. Eng keng tarqalgan ikkitasi I2C (Inter-Integrated Circuit) va SPI (Serial Peripheral Interface). Ushbu protokollar bir nechta qurilmalarga bir nechta pin yordamida mikrokontroller bilan aloqa qilish imkonini beradi. Yaxshiyamki, kutubxonalar siz uchun aloqani boshqaradiganligi sababli, past darajadagi tafsilotlarni bilishingiz shart emas.
BMP280 sensori bilan haroratni o'qish (CircuitPython):
import board
import adafruit_bmp280
# I2C avtobus ob'ektini yarating
i2c = board.I2C() # Standart SCL va SDA pinlaridan foydalanadi
# Sensor ob'ektini yarating
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c)
# Haroratni o'qing
temperature = bmp280.temperature
print(f"Harorat: {temperature:.2f} C")
Pulse Width Modulation (PWM)
PWM - bu raqamli pin ustida analog chiqishni simulyatsiya qilish uchun ishlatiladigan texnika. Pinni tezda yoqish va o'chirish orqali siz LEDni xiralashtirish, DC motorining tezligini boshqarish yoki servo motorini joylashtirish uchun foydali bo'lgan o'rtacha kuchlanishni boshqarishingiz mumkin.
Ulanish va narsalar interneti (IoT)
Bu erda ESP32 va Pico W kabi taxtalar haqiqatan ham porlaydi. O'rnatilgan Wi-Fi bilan Python IoT qurilmalarini yaratishni hayratlanarli darajada osonlashtiradi.
Wi-Fi-ga ulanish
Qurilmangizni tarmoqqa ulash birinchi qadamdir. Tarmoq ma'lumotlaringizni xavfsiz saqlash uchun siz fayl yaratishingiz kerak (ko'pincha CircuitPython-da secrets.py deb ataladi).
ESP32-ni Wi-Fi-ga ulash (MicroPython):
import network
SSID = "Sizning tarmoq nomingiz"
PASSWORD = "Sizning tarmoq parolingiz"
station = network.WLAN(network.STA_IF)
station.active(True)
station.connect(SSID, PASSWORD)
while not station.isconnected():
pass
print("Ulanish muvaffaqiyatli")
print(station.ifconfig())
Veb so'rovlarini yuborish
Ulangandan so'ng, siz internet bilan o'zaro aloqa qilishingiz mumkin. Siz Application Programming Interfaces (API)dan ma'lumotlarni olishingiz, sensor ma'lumotlarini veb-xizmatga joylashtirishingiz yoki onlayn harakatlarni ishga tushirishingiz mumkin.
API-dan JSON ma'lumotlarini olish (`urequests` kutubxonasidan foydalangan holda):
import urequests
response = urequests.get("http://worldtimeapi.org/api/timezone/Etc/UTC")
data = response.json()
print(f"Joriy UTC vaqti: {data['datetime']}")
response.close()
MQTT: IoT tili
HTTP foydali bo'lsa-da, IoT aloqasi uchun oltin standart MQTT (Message Queuing Telemetry Transport) hisoblanadi. Bu past o'tkazuvchanlik, yuqori kechikishli tarmoqlar uchun mo'ljallangan engil nashr-obuna protokoli. Qurilma sensor ma'lumotlarini "mavzu"ga "nashr" qilishi mumkin va ushbu mavzuga "obuna bo'lgan" har qanday boshqa qurilma (yoki server) ma'lumotlarni darhol oladi. Bu veb-serverni doimiy ravishda so'rov qilishdan ancha samaraliroq.
Ilg'or mavzular va eng yaxshi amaliyotlar
Loyihalaringiz o'sib borgan sari siz mikrokontrollerning cheklovlariga duch kelasiz. Kuchli o'rnatilgan Python kodini yozish uchun ba'zi bir eng yaxshi amaliyotlar.
- Xotirani boshqarish: RAM sizning eng qimmatli resursingizdir. Tugatish ichida ro'yxatlar yoki uzun satrlar kabi katta ob'ektlarni yaratishdan saqlaning. Xotirani bo'shatish va bo'shatish uchun axlat yig'ishni qo'lda ishga tushirish uchun
gcmodulidan (import gc; gc.collect()) foydalaning. - Quvvatni boshqarish: Batareya bilan ishlaydigan qurilmalar uchun quvvat samaradorligi juda muhimdir. Ko'pgina mikrokontrollerlarda chipning ko'p qismini o'chirib qo'yadigan, juda kam quvvat sarflaydigan va belgilangan vaqtdan keyin yoki tashqi tetikdan uyg'onishi mumkin bo'lgan "chuqur uyqu" rejimi mavjud.
- Fayl tizimi: Siz xuddi oddiy kompyuterdagidek, o'rnatilgan flesh xotiraga fayllarni o'qishingiz va yozishingiz mumkin. Bu ma'lumotlarni qayd etish yoki konfiguratsiya sozlamalarini saqlash uchun juda mos keladi.
- Uzilishlar: Tugmaning holatini doimiy ravishda siklda tekshirish (so'rov deb ataladigan jarayon) o'rniga, siz uzilishdan foydalanishingiz mumkin. Uzilish so'rovi (IRQ) - bu asosiy kodni to'xtatib, maxsus funktsiyani ishga tushirish va keyin davom ettirish uchun apparat signali. Bu ancha samarali va sezgir.
Haqiqiy loyiha g'oyalarini namoyish qilish
Yaratishga tayyormisiz? Bu erda biz muhokama qilgan tushunchalarni birlashtirgan bir nechta g'oyalar:
- Aqlli ob-havo stantsiyasi: Harorat, namlik va bosimni o'lchash uchun BME280 sensori bilan ESP32-dan foydalaning. Ma'lumotlarni kichik OLED ekranda ko'rsating va uni MQTT orqali Adafruit IO yoki Home Assistant kabi panellarga nashr qiling.
- Avtomatlashtirilgan o'simlikni sug'orish tizimi: Tuproq namligi sensorini Raspberry Pi Pico-ga ulang. Tuproq quruq bo'lsa, bir necha soniya davomida kichik suv nasosini yoqadigan relyeni faollashtirish uchun GPIO pinidan foydalaning.
- Maxsus USB Macro Pad: Pico yoki ko'plab Adafruit taxtalari kabi USB HID (Human Interface Device)ni qo'llab-quvvatlaydigan CircuitPython taxtasidan foydalaning. Murakkab klaviatura yorliqlarini yuborish yoki oldindan belgilangan matnni yozish uchun tugmalarni dasturlang va samaradorligingizni oshiring.
Xulosa: Kelajak Python-ga o'rnatilgan
Python o'rnatilgan dasturlash landshaftini tubdan o'zgartirdi. U kirish to'sig'ini pasaytirdi va dasturiy ta'minot ishlab chiquvchilariga apparatni boshqarishga va apparat muhandislariga har qachongidan ham tezroq prototiplash imkonini berdi. Bir necha qator o'qiladigan kodda sensorni o'qish yoki internetga ulanishning soddaligi o'yinni o'zgartiruvchidir.
Miltillovchi LEDdan to'liq funksiyali IoT qurilmasiga sayohat nihoyatda foydali. Global hamjamiyat va ochiq kodli kutubxonalarning boyligi siz muammoga duch kelganingizda hech qachon yolg'iz qolmaysiz degan ma'noni anglatadi. Shunday qilib, taxtani tanlang, firmwareni yoriting va Python va jismoniy dunyoning hayajonli kesishmasidagi sarguzashtingizni boshlang. Yagona chegara - bu sizning tasavvuringiz.